import {
	set2Jsonstr,
	jsonstr2Set
} from '../../core/fobj.js'
//本地消息队列
/**
 * 可以添加主题
 * 可以消费消息
 */
const _主题集 = '!本地主题集'
var Localmq = {
	newCreate() {
		var self = {}
		/**
		 * @param {Object}
		 */
		self.hashmap = {}
		let str1=uni.getStorageSync(_主题集);
		//console.log("str1=",str1,"list:",JSON.parse(str1) ,";set:",new Set(JSON.parse(str1)))
		self.keys = jsonstr2Set(str1)
		//console.log("keys", self.keys, [...self.keys],Array.from(self.keys))
		if (self.keys.size > 0) {
			
			self.keys.forEach((value, key) =>{
				let str2 = uni.getStorageSync(value)
				//console.log("===,",key, value,"str2" + str2 + ";")
				if (str2 == null || str2 == '')
					self.hashmap[key] = []
				else {				
					let value = JSON.parse(str2);
					self.hashmap[key] = value
				//	console.log(" value", value)
				}
			});
		}
		
		/**
		 * 
		 * @param {String} 主题 
		 */
		self.emit = function(主题, 值) {
			if (!self.hashmap.hasOwnProperty(主题)) {
				self.hashmap[主题] = []
				self.keys.add(主题)
				//console.log("set2Jsonstr(self.keys)",set2Jsonstr(self.keys))
				uni.setStorageSync(
					_主题集,
					set2Jsonstr(self.keys)
				)
			}
			self.hashmap[主题].push(值);
			uni.setStorageSync(
				主题,
				JSON.stringify(self.hashmap[主题])
			);
		}
		self.on = function(主题) {
			if (!self.hashmap.hasOwnProperty(主题)) {
				self.hashmap[主题] = []
				//console .log("value",value)
				return null;
			}
			//console.log("self.hashmap[主题]",self.hashmap[主题].length)
			let value= (self.hashmap[主题].length == 0) ? null : self.hashmap[主题].shift()
			let str3=JSON.stringify(self.hashmap[主题]);
			//console.log("str3",str3)		
			uni.setStorageSync(主题,str3);			
			//console.log("value"+value)		
			return value;
		}
		self.isEmpty = function(主题) {
			if (!self.hashmap.hasOwnProperty(主题)) {
				return true;
			} else {
				return (self.hashmap[主题].length == 0);
			}
		}
		return self;
	}
}
export default Localmq;
// let mq =Localmq.newCreate();
// mq.emit("msg1","点对1")
// mq.emit("msg1","点对2")
// mq.emit("msg1","点对3")
// mq.emit("msg1","点对4")
// let mq =Localmq.newCreate();
// console.log("获取消息",mq.isEmpty("msg1"))
// console.log("获取消息",mq.on("msg1"))
// console.log("获取消息",mq.on("msg1"))
// console.log("获取消息",mq.on("msg1"))
// console.log("获取消息",mq.on("msg1"))
// console.log("获取消息",mq.on("msg1"))
// console.log("获取消息",mq.isEmpty("msg1"))
